livereload.js が使うポートを http serve が使う TCP ポートを併用するように修正#6
Conversation
|
ありがとうございます。 実はこの 35729 というポート番号は、LiveReload という機能が作られた際から使われている番号でして、多くの LiveReload ツールでデフォルトポートとして使われております。例: Grunt, Gulp, Webpack Dev Server, Spring boot DevTools, Python livereload など そして、それとは別に livereload 用のブラウザ拡張がありまして、そのブラウザ拡張が 35729 をめがけてページにリロードを送ってくる様になっています。 方法は以下のどちらでも構いません。
|
|
了解です。オプションで設定できるように修正します! |
|
1 のオプションで指定できるようにしてみました。これでどうでしょうか? |
| + (location.host || 'localhost').split(':')[0] | ||
| + ':35729/livereload.js?snipver=1"></' | ||
| + (location.host || 'localhost') | ||
| + '/_assets/livereload.js?snipver=1"></' |
There was a problem hiding this comment.
location.host はポート番号を含んでいて、このスクリプトが動いているということは、この HTML が正しく読み込めていて、参照する location.host がポート番号付きで見えていると思います。
There was a problem hiding this comment.
この修正によりポート番号 35729 が消えてしまっているようです。
There was a problem hiding this comment.
http ポートで同じように返すようにしているので、問題ないかと思ったんですが、どうでしょうか?
There was a problem hiding this comment.
ここに書いた様に、ポート 35729 からサーブする実装を残して頂きたいです。
There was a problem hiding this comment.
-usehttpport が指定されていないときには 35729 ポートを使ったほうがいい感じですね?
There was a problem hiding this comment.
はい。livereload の本来のポート番号は 35729 ですので、それをデフォルトとして残したいです。
|
たいへん遅くなりましたが、修正しました。よろしくお願いします! |
|
お忙しい所すみません。こちらの修正、どうでしょうか? |
|
修正ありがとうございます。 ① HTML テンプレートの URL が二重ポートになる
<script>document.write('<script src="'
+ location.protocol + '//'
+ (location.host || 'localhost')
+ '%s/_assets/livereload.js?snipver=1"></'
+ 'script>')</script>ここで となり、 元コードでは
② LiveReload の「お作法」パスが 35729 側から消えている僕が前回コメントでお願いしたのは、デフォルトでは従来通り 35729 を維持して LiveReload ブラウザ拡張に合わせる、という意図でした。LiveReload ブラウザ拡張は 35729 ポートに対して
を期待します。元コードは mux.HandleFunc("/livereload.js", ...) // 埋め込み JS を返す
mux.Handle("/", lrs) // WebSocket
http.ListenAndServe(":35729", mux)として上記 2 つを 35729 で提供していました。 新しいコードでは 35729 用の goroutine が Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf(...)
http.DefaultServeMux.ServeHTTP(w, r)
}),
修正方針の提案デフォルト挙動と
前回コメントで触れた「関数化しておくと良さそう」というのは、まさにこの goroutine の中身 + テンプレート用パス文字列 を一つの関数にまとめておくと、フラグでまるっと切り替えられて読みやすいかな、という意図でした。 細かい点(任意)
|
|
了解です。修正します。お手数おかけします! |
変な動きしていたところは直りました。
これで、 livereload.js が使うポートを http serve が使う TCP ポートを併用するように修正できたと思います。
よろしくお願いします。